package EA.operators.selection;

import EA.*;

/** An abstract class implementing the scheme of selection. This is subclassed
    to a number of different selection methods. (Tournament, ranking, 
    roulette whell etc.)
*/
public class Selection
{

  /** Perform a selection among the sources.
      Use this method when an instance 
      of the Selection object is used (e.g. for speed reasons).<br>
      <b>Note:</b> The source objects must implement the interface RKUValuation
      from the package RKUjava.util. When using this method the object with
      highest value is selected. Objects are NOT cloned.
      @param sources The object to select between. 
      @param numberofselected The size of the resulting array.
  */
  public Object[] objSelect(Object[] sources, int numberofselected)
    {
      return null;
    };

  /** Perform a selection among the sources.  Use this method when an instance 
      of the Selection object is used (e.g. for speed reasons).<br>
      <b>Note:</b> The source objects must implement the interface RKUValuation
      from the package RKUjava.util. Objects are NOT cloned.
      @param sources The object to select between. 
      @param numberofselected The size of the resulting array.
      @param maximization Boolean indicating whether this is a maximization or
      minimization selection.
  */
  public Object[] objSelect(Object[] sources, int numberofselected, boolean maximization) 
    {
      return null;
    };

  /** Perform a selection among the sources. 
      Use this method when an instance 
      of the Selection object is used (e.g. for speed reasons).<br>
      <b>Note:</b> The source objects must implement the interface RKUValuation
      from the package RKUjava.util. 
      @param sources The object to select between. 
      @param numberofselected The size of the resulting array.
      @param maximization Boolean indicating whether this is a maximization or
      minimization selection.
      @param cloneobjects Boolean indicating whether you want to clone the 
      selected object. (Remember to implement cloneable)
  */
  public Object[] objSelect(Object[] sources, int numberofselected, boolean maximization, boolean cloneobjects) 
    {
      return null;
    };

  /** Perform a selection among the sources in the chosen range. 
      Use this method when an instance 
      of the Selection object is used (e.g. for speed reasons).<br>
      <b>Note:</b> The source objects must implement the interface RKUValuation
      from the package RKUjava.util. Passing 0 in <tt>lowerindex</tt> and 
      sources.length in <tt>upperindex</tt> will perform a selection among all
      objects in the sources-array.
      @param sources The object to select between. 
      @param numberofselected The size of the resulting array.
      @param maximization Boolean indicating whether this is a maximization or
      minimization selection.
      @param cloneobjects Boolean indicating whether you want to clone the 
      selected object. (Remember to implement cloneable)
      @param lowerindex The lower index of the range.
      @param upperindex The upper index of the range + 1. 
  */
  public Object[] objSelect(Object[] sources, int numberofselected, boolean maximization, boolean cloneobjects, int lowerindex, int upperindex) 
    {
      return null;
    };

  /** Perform a selection among the sources and place the selected in an array.
      Use this method when an instance 
      of the Selection object is used (e.g. for speed reasons).<br>
      <b>Note:</b> The source objects must implement the interface RKUValuation
      from the package RKUjava.util. When using this method the object with
      highest value is selected. Objects are NOT cloned.
      @param sources The object to select between. 
      @param numberofselected The size of the resulting array.
      @param destination The array to place the selected in. MUST be big 
      enough to hold all entries.
      @return The array passed as <tt>destination</tt>.
  */
  public Object[] objSelectInto(Object[] sources, int numberofselected, Object[] destination)
    {
      return null;
    };

  /** Perform a selection among the sources and place the selected in an array.
      Use this method when an instance 
      of the Selection object is used (e.g. for speed reasons).<br>
      <b>Note:</b> The source objects must implement the interface RKUValuation
      from the package RKUjava.util. Objects are NOT cloned.
      @param sources The object to select between. 
      @param numberofselected The size of the resulting array.
      @param maximization Boolean indicating whether this is a maximization or
      minimization selection.
      @param destination The array to place the selected in. MUST be big 
      enough to hold all entries.
      @return The array passed as <tt>destination</tt>.
  */
  public Object[] objSelectInto(Object[] sources, int numberofselected, boolean maximization, Object[] destination) 
    {
      return null;
    };


  /** Perform a selection among the sources and place the selected in an array. 
      Use this method when an instance 
      of the Selection object is used (e.g. for speed reasons).<br>
      <b>Note:</b> The source objects must implement the interface RKUValuation
      from the package RKUjava.util. 
      @param sources The object to select between. 
      @param numberofselected The size of the resulting array.
      @param maximization Boolean indicating whether this is a maximization or
      minimization selection.
      @param cloneobjects Boolean indicating whether you want to clone the 
      selected object. (Remember to implement cloneable)
      @param destination The array to place the selected in. MUST be big 
      enough to hold all entries.
      @return The array passed as <tt>destination</tt>.
  */
  public Object[] objSelectInto(Object[] sources, int numberofselected, boolean maximization, boolean cloneobjects, Object[] destination) 
    {
      return null;
    };

  /** Perform a selection among the sources in the chosen range and place the selected in an array.
      Use this method when an instance 
      of the Selection object is used (e.g. for speed reasons).<br>
      <b>Note:</b> The source objects must implement the interface RKUValuation
      from the package RKUjava.util. Passing 0 in <tt>lowerindex</tt> and 
      sources.length in <tt>upperindex</tt> will perform a selection among all
      objects in the sources-array.
      @param sources The object to select between. 
      @param numberofselected The size of the resulting array.
      @param maximization Boolean indicating whether this is a maximization or
      minimization selection.
      @param cloneobjects Boolean indicating whether you want to clone the 
      selected object. (Remember to implement cloneable)
      @param lowerindex The lower index of the range.
      @param upperindex The upper index of the range + 1. 
      @param destination The array to place the selected in. MUST be big 
      enough to hold all entries.
      @return The array passed as <tt>destination</tt>.
  */
  public Object[] objSelectInto(Object[] sources, int numberofselected, boolean maximization, boolean cloneobjects, int lowerindex, int upperindex, Object[] destination)
    {
      return null;
    };

  /** Perform a selection among the sources. <br>
      <b>Note:</b> The source objects must implement the interface RKUValuation
      from the package RKUjava.util. When using this method the object with
      highest value is selected. Objects are NOT cloned.
      @param sources The object to select between. 
      @param numberofselected The size of the resulting array.
  */
  public static Object[] select(Object[] sources, int numberofselected)
    {
      return null;
    };

  /** Perform a selection among the sources. <br>
      <b>Note:</b> The source objects must implement the interface RKUValuation
      from the package RKUjava.util. Objects are NOT cloned.
      @param sources The object to select between. 
      @param numberofselected The size of the resulting array.
      @param maximization Boolean indicating whether this is a maximization or
      minimization selection.
  */
  public static Object[] select(Object[] sources, int numberofselected, boolean maximization) 
    {
      return null;
    };


  /** Perform a selection among the sources. <br>
      <b>Note:</b> The source objects must implement the interface RKUValuation
      from the package RKUjava.util. 
      @param sources The object to select between. 
      @param numberofselected The size of the resulting array.
      @param maximization Boolean indicating whether this is a maximization or
      minimization selection.
      @param cloneobjects Boolean indicating whether you want to clone the 
      selected object. (Remember to implement cloneable)
  */
  public static Object[] select(Object[] sources, int numberofselected, boolean maximization, boolean cloneobjects) 
    {
      return null;
    };

  /** Perform a selection among the sources in the chosen range. <br>
      <b>Note:</b> The source objects must implement the interface RKUValuation
      from the package RKUjava.util. Passing 0 in <tt>lowerindex</tt> and 
      sources.length in <tt>upperindex</tt> will perform a selection among all
      objects in the sources-array.
      @param sources The object to select between. 
      @param numberofselected The size of the resulting array.
      @param maximization Boolean indicating whether this is a maximization or
      minimization selection.
      @param cloneobjects Boolean indicating whether you want to clone the 
      selected object. (Remember to implement cloneable)
      @param lowerindex The lower index of the range.
      @param upperindex The upper index of the range + 1. 
  */
  public static Object[] select(Object[] sources, int numberofselected, boolean maximization, boolean cloneobjects, int lowerindex, int upperindex) 
    {
      return null;
    };

  /** Perform a selection among the sources and place the selected in an array. <br>
      <b>Note:</b> The source objects must implement the interface RKUValuation
      from the package RKUjava.util. When using this method the object with
      highest value is selected. Objects are NOT cloned.
      @param sources The object to select between. 
      @param numberofselected The size of the resulting array.
      @param destination The array to place the selected in. MUST be big 
      enough to hold all entries.
      @return The array passed as <tt>destination</tt>.
  */
  public static Object[] selectInto(Object[] sources, int numberofselected, Object[] destination)
    {
      return null;
    };

  /** Perform a selection among the sources and place the selected in an array. <br>
      <b>Note:</b> The source objects must implement the interface RKUValuation
      from the package RKUjava.util. Objects are NOT cloned.
      @param sources The object to select between. 
      @param numberofselected The size of the resulting array.
      @param maximization Boolean indicating whether this is a maximization or
      minimization selection.
      @param destination The array to place the selected in. MUST be big 
      enough to hold all entries.
      @return The array passed as <tt>destination</tt>.
  */
  public static Object[] selectInto(Object[] sources, int numberofselected, boolean maximization, Object[] destination) 
    {
      return null;
    };

  /** Perform a selection among the sources and place the selected in an array. <br>
      <b>Note:</b> The source objects must implement the interface RKUValuation
      from the package RKUjava.util. 
      @param sources The object to select between. 
      @param numberofselected The size of the resulting array.
      @param maximization Boolean indicating whether this is a maximization or
      minimization selection.
      @param cloneobjects Boolean indicating whether you want to clone the 
      selected object. (Remember to implement cloneable)
      @param destination The array to place the selected in. MUST be big 
      enough to hold all entries.
      @return The array passed as <tt>destination</tt>.
  */
  public static Object[] selectInto(Object[] sources, int numberofselected, boolean maximization, boolean cloneobjects, Object[] destination) 
    {
      return null;
    };

  /** Perform a selection among the sources in the chosen range and place the selected in an array. <br>
      <b>Note:</b> The source objects must implement the interface RKUValuation
      from the package RKUjava.util. Passing 0 in <tt>lowerindex</tt> and 
      sources.length in <tt>upperindex</tt> will perform a selection among all
      objects in the sources-array.
      @param sources The object to select between. 
      @param numberofselected The size of the resulting array.
      @param maximization Boolean indicating whether this is a maximization or
      minimization selection.
      @param cloneobjects Boolean indicating whether you want to clone the 
      selected object. (Remember to implement cloneable)
      @param lowerindex The lower index of the range.
      @param upperindex The upper index of the range + 1. 
      @param destination The array to place the selected in. MUST be big 
      enough to hold all entries.
      @return The array passed as <tt>destination</tt>.
  */
  public static Object[] selectInto(Object[] sources, int numberofselected, boolean maximization, boolean cloneobjects, int lowerindex, int upperindex, Object[] destination)
    {
      return null;
    };



}
